40.'use strict' 的作用是什么
旨在减少常见错误,更健壮、安全
- 意外创建全局变量 // message = "Hello JavaScript! "; // 这一行代码就会抛出 ReferenceError
- 不能使用 delete 删除变量 var x; delete x; // !!! 语法错误
- 不能使用保留子做变量名 public private protected static extends implements let var yield var private = 123; // !!! 语法错误
var public = 'hello'; // !!! 语法错误 - 为只读属性赋值报错
js
var obj2 = { get x() { return 17; } };
obj2.x = 5; // 抛出TypeError错误
var obj1 = {};
Object.defineProperty(obj1, "x", { value: 42, writable: false });
obj1.x = 9; // 抛出TypeError错误
delete Object.prototype; // 抛出TypeError错误
var o = { p: 1, p: 2 }; // !!! 语法错误
- eval不在为上下文中创建变量或函数
- 禁止使用with语句
- 全局作用域的函数中的this不再指向全局而是undefined
- arguments 禁用